package com.flow.demo.module.gd.service.gduser;


import com.flow.demo.framework.common.pojo.PageResult;
import com.flow.demo.module.gd.controller.admin.user.vo.GdUserPageReqVO;
import com.flow.demo.module.gd.controller.admin.user.vo.GdUserSaveReqVO;
import com.flow.demo.module.gd.controller.app.gift.dto.GetVideoTimesDto;
import com.flow.demo.module.gd.controller.app.gift.dto.SaveAddressDto;
import com.flow.demo.module.gd.controller.app.gift.vo.SaveVideoTimeVo;
import com.flow.demo.module.gd.controller.app.user.dto.FullCondition;
import com.flow.demo.module.gd.controller.app.user.dto.UploadImgDto;
import com.flow.demo.module.gd.controller.app.user.vo.*;
import com.flow.demo.module.gd.dal.dataobject.gduser.GdUserDO;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;

/**
 * ppd筛查-监护人用户 Service 接口
 *
 * @author pompey_hpy
 */
public interface GdUserService {


    UploadImgDto uploadImg(MultipartFile file, UploadImgVo vo);

    void update(UpdateUserInfoVo updateReqVO);

    void sendCode(SendCodeVo vo);

    void bindPhone(BindPhoneVo vo);

    boolean verifyPhone(VerifyPhoneVo vo);

    boolean verifyCode(BindPhoneVo vo);

    /**
     * 创建客户信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createUser(@Valid GdUserSaveReqVO createReqVO);

    /**
     * 更新客户信息
     *
     * @param updateReqVO 更新信息
     */
    void updateUser(@Valid GdUserSaveReqVO updateReqVO);

    /**
     * 删除客户信息
     *
     * @param id 编号
     */
    void deleteUser(Integer id);

    /**
     * 获得客户信息
     *
     * @param id 编号
     * @return 客户信息
     */
    GdUserDO getUser(Integer id);

    /**
     * 获得客户信息分页
     *
     * @param pageReqVO 分页查询
     * @return 客户信息分页
     */
    PageResult<GdUserDO> getUserPage(GdUserPageReqVO pageReqVO);

    GetVideoTimesDto getVideoTimes(Long loginUserId);


    void saveVideoTime(SaveVideoTimeVo vo, Long loginUserId);

    void saveAddress(SaveAddressDto vo, Long loginUserId);

    FullCondition getFullCondition(Long loginUserId);

}
